package com.leecode;

import com.test.TreeNode;

/**
 * 114. 二叉树展开为链表 给定一个二叉树，原地将它展开为一个单链表。
 * 例如，给定二叉树
 * @formatter:off
 *     1
 *    / \
 *   2   5
 *  / \   \
 * 3   4   6
 *
 * 将其展开为：
 * 1
 *  \
 *   2
 *    \
 *     3
 *      \
 *       4
 *        \
 *         5
 *          \
 *           6
 * @formatter:on
 */
public class Leet114 {
	public static void main(String[] args) {
		new Leet114().flatten(new TreeNode(1,new TreeNode(2),null));
	}

	public void flatten(TreeNode root) {

	}
	/**
	 * 知道思路,自认为对的代码却没有得到正确的结果?!!
	 */
	public void flatten2(TreeNode root) {
		if (root == null) return;

		flatten(root.right);
		flatten(root.left);
		if (root.left != null) {
			TreeNode temp = root.right;
			root.right = root.left;
			root.left=null;
//			root.right.right =temp;//bug:走这步之前要确保,右树是"笔直的"
			TreeNode moveR=root.right;
			while(moveR!=null){
				moveR=moveR.right;//
			}
			moveR=temp;
		}
	}
}
